/* Test file for Unicode edge cases - INPUT */

/* Surrogate pairs and combining characters */
.surrogate-test {
  /* High surrogate followed by low surrogate */
  content: "𝌆"; /* U+1D306 */

  /* Unpaired surrogate */
  content: "\uD800";

  /* Multiple combining characters */
  content: "a\u0301\u0302\u0303"; /* a + acute + circumflex + tilde */

  /* Bidirectional text with combining marks */
  content: "Hello\u202E\u0301World";
}

/* Invalid identifiers and class names */
.\1234 {
  color: red;
}

/* Zero-width characters in identifiers */
.test​test {
  /* Contains U+200B zero-width space */
  color: blue;
}

/* Right-to-left override in property names */
.rtl-test {
  col\u202eor: green; /* RTL override in middle of "color" */
}

/* Maximum-length Unicode escapes */
.unicode-max {
  /* Maximum valid Unicode code point */
  content: "\U0010FFFF";

  /* Just beyond maximum valid code point */
  content: "\U00110000";
}

/* Null bytes and control characters */
.control-chars {
  content: "\0";
  content: "\1";
  content: "\31";
  font-family: "\0font";
}

/* Special whitespace characters */
.whitespace-test {
  margin: 1px　2px　3px　4px; /* U+3000 ideographic space */
  padding: 1px␣2px␣3px␣4px; /* U+2423 open box */
}

/* Combining characters in custom properties */
:root {
  --combining-mark: "n\u0303";
  --rtl-value: "\u202Evalue\u202C";
}

/* Unicode variation selectors */
.variation-test {
  content: "⌘︎";
  content: "☺︎";
}

/* Mixed directional text */
.bidi-test {
  content: "Hello \u202B Arabic text \u202C World";
  content: "Test \u202E reversed text \u202C normal";
}

/* Invalid UTF-16 sequences */
.invalid-utf16 {
  content: "\uD800A";
  content: "\uDC00";
  content: "\uD800\uD800";
}

/* Overlong UTF-8 sequences */
.overlong-utf8 {
  content: "\xC1\x81";
  content: "\xE0\x81\x81";
  content: "\xF0\x80\x81\x81";
}
